<?php
namespace App\Api\Fcjd;

use PhalApi\Api;
use PhalApi\Exception\BadRequestException;

/**
 * 非常检单热更新
 * @author dogstar 20200331
 */
class Update extends Api {
    public function getRules() {
        return array(
            'download' => array(),
            'updateApp' => array(),
            'updateInfo' => array(
                'version' => array('name' => 'version', 'type' => 'string', 'require' => true, 'desc' => 'version'),
            ),
        );
    }

    /**
     * 获取版本信息接口
     * @desc 获取版本信息接口
     * @return int res 更新app信息
     */
    public function updateInfo() {
        $version = $this->version;
        $where = array(
            'version' => $version,
        );
        $res = \PhalApi\DI()->notorm->phone_update->where('is_force', '1')->order('id desc')->fetchOne();
        return $res;
    }

    /**
     * 热更新
     * @desc 热更新数据
     * @return array 更新文件信息
     */
    public function download() {
        // 最简单的处理方式
        header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
        header('Access-Control-Allow-Headers: *,x-token,X-token');
        
        // 从缓存中获取文件信息
        // $fileInfo = \PhalApi\DI()->cache->get('veryeasyai');
        
        // if (!$fileInfo) {
        //     // 如果缓存不存在，从数据库重新获取
        //     $fileInfo = \PhalApi\DI()->notorm->phone_auto_file
        //         ->where('state', 1)
        //         ->fetchAll();
                
        //     // 更新缓存
        //     \PhalApi\DI()->cache->set('veryeasyai', $fileInfo, 24*60*60*30);
        // }
        $fileInfo = \PhalApi\DI()->notorm->phone_auto_file
                ->where('state', 1)
                ->fetchAll();
        \PhalApi\DI()->response->setMsg('获取成功');
        return $fileInfo;
    }



    /**
     * 更新已经安装APP
     * @desc 更新已经安装APP
     * @return int res 更新已经安装APP
     */
    public function updateApp() {
        // 最简单的处理方式
        header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
        header('Access-Control-Allow-Headers: *,x-token,X-token');
        
        $json = file_get_contents('php://input');
        // 尝试将JSON数据解码为PHP数组
        $data = json_decode($json, true);

        // 检查JSON是否解码成功
        if (json_last_error() === JSON_ERROR_NONE) {
            // 成功解码，$data现在是一个关联数组
            // 这里可以处理$data数组
            $oaid = $data['oaid'];
            $applist = $data['appList'];
            // 判断appinfo是否是数组
            if (is_array($applist)) {
                // 如果是数组，将其转换为JSON字符串
                $applist = json_encode($applist);
            }

            $updateRs = \PhalApi\DI()->notorm->phone_list->where('oaid = ?', $oaid)->update(array( 'applist' => $applist, 'update_time' => date("Y-m-d H:i:s", time()) ));
            // \PhalApi\DI()->response->setMsg('更新成功');
            return array('update_num' => $updateRs ? $updateRs : 0);
            // 返回更新的数量，0表示没有更新，1表示1条记录，false表示数据库更新失败
            // return array('update_num' => $res);

        } else {
            // JSON解码失败，输出错误信息
            throw new BadRequestException('Invalid JSON data');
        }
            
            
        return array('update_num' => $res);
            
    }

}
